/**
 * jquery.snow - jQuery Snow Effect Plugin
 *
 * Available under MIT licence
 *
 * @version 1 (21. Jan 2012)
 * @author Ivan Lazarevic
 * @requires jQuery
 * @see http://workshop.rs
 *
 * @params minSize - min size of snowflake, 10 by default
 * @params maxSize - max size of snowflake, 20 by default
 * @params newOn - frequency in ms of appearing of new snowflake, 500 by default
 * @params flakeColor - color of snowflake, #FFFFFF by default
 * @example $.fn.snow({ maxSize: 200, newOn: 1000, flakeColor: #000000, });
 */
(function($){

    $.fn.snow = function(options){
            //var array = ['&#9731;','&#10052;','&#127877;','&#127873;']

            var $text = '&#10052;'; //snowflake
            var $flake             = $('<div id="flake" />').css({'position': 'absolute', 'top': '-50px', 'text-shadow': '-1px 0 grey, 0 1px grey, 1px 0 grey, 0 -1px grey'}).html($text),
                documentHeight     = $(document).height(),
                documentWidth    = $(document).width(),
                defaults        = {
                                    minSize        : 10,
                                    maxSize        : 20,
                                    newOn        : 500,
                                    flakeColor    : "#FFFFFF"
                                },
                options            = $.extend({}, defaults, options);


            var interval        = setInterval( function(){
                var startPositionLeft     = Math.random() * documentWidth - 100,
                     startOpacity        = 0.5 + Math.random(),
                    sizeFlake            = options.minSize + Math.random() * options.maxSize,
                    endPositionTop        = documentHeight - 40,
                    endPositionLeft        = startPositionLeft - 100 + Math.random() * 200,
                    durationFall        = documentHeight * 10 + Math.random() * 5000;
                $flake
                    .clone()
                    .appendTo('body')
                    .css(
                        {
                            left: startPositionLeft,
                            opacity: startOpacity,
                            'font-size': sizeFlake,
                            color: options.flakeColor
                        }
                    )
                    //.html(array[Math.round(Math.random() * array.length -1)])
                    .animate(
                        {
                            top: endPositionTop,
                            left: endPositionLeft,
                            opacity: 0.2
                        },
                        durationFall,
                        'linear',
                        function() {
                            $(this).remove()
                        }
                    );
            }, options.newOn);

    };

})(jQuery);
